package com.itbaizhan.mapper2;

import com.itbaizhan.pojo.Student;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.FetchType;
import org.apache.ibatis.annotations.One;
import java.util.List;

/*注册包有没有导进来*/
public interface StudentMapper2 {
    /*一对一关联查询  学生表(主表)与班级表
     * 一个学生对应一个班级*/
    //查询出学生所在的班级
    @Select("select * from student")
    /*自定义映射关系  */
    @Results(id="studentMapper" , value = {
        @Result(id=true, property="sid",column = "sid"),
         @Result(property = "name",column = "name"),
         @Result(property = "age",column = "age"),
         @Result(property = "sex",column = "sex"),
            /*对象的自定义 也是用Result()
             * property:属性名（在主表中对象的名）
             * column: 调用方法时传入的参数列（关联的列）
             * one: 一对一  表示该属性是一个对象
             * select: 调用从表的方法
             * fetchType: 加载方式 （一对一都是立该加载）*/
         @Result(property = "classes" ,column = "classId",
                 one = @One(select = "com.itbaizhan.mapper2.ClassMapper2.findById",
                 fetchType = FetchType.EAGER))

    })
    List<Student> findAll();

    //一对多查询  sql语句中的classId 要与表中的名相同
    //根据班级id查询学生（从表）  这里对应的是student表的classId 不是class表的cid
    @Select("select * from student where classId=#{classId}")
    List<Student> findById(int classId);
}
